<?php
/**
 * @name Classe PedidoAD
 *
 * @author  Pedro Schneider (correaschneider@gmail.com)
 *
 */
class PedidoAD extends Conexao
{
	/**
	 * @method Pesquisar
	 *
	 * @param object $Pedido
	 * @param str $ordenacao
	 * @param int $limite
	 * @param int $pagina
	 * @param str $complemento
	 *
	 * @return  array
	 */
	public function Pesquisar($Pedido = NULL, $ordenacao = NULL, $limite = NULL, $pagina = 1,$complemento = NULL)
	{

		$SQL = "SELECT ";
		$SQL .= PREFIXO_TABELA . "pedido.* ";
		$SQL .= "FROM ";
		$SQL .= PREFIXO_TABELA . "pedido ";

		$SQL .= $this->ObterClausulaWhere($Pedido);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		if (is_numeric($limite))
		{
			$SQL .= " LIMIT ".(($pagina-1)*$limite).", ".$limite;
		}

		$resultado = $this->Executar($SQL);

		$colecaoPedido = array();

		if (!$resultado->EOF)
		{
			while (!$resultado->EOF)
			{
				$contador = 0;
				$retornoPedido = new stdClass();

				$retornoPedido->PedidoID										 = $resultado->fields($contador++);
				$retornoPedido->ClienteID										 = $resultado->fields($contador++);
				$retornoPedido->DataCompra										 = $resultado->fields($contador++);
				$retornoPedido->ValorTotal										 = $resultado->fields($contador++);
				$retornoPedido->SituacaoID										 = $resultado->fields($contador++);
				$retornoPedido->FormaEntregaID									 = $resultado->fields($contador++);

				array_push($colecaoPedido, $retornoPedido);

				$resultado->MoveNext();
			}
		}

		return $colecaoPedido;

	}


	/**
	 * @method Obter
	 *
	 * @param object $Pedido
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  object
	 */
	public function Obter($Pedido, $ordenacao = NULL, $complemento = NULL)
	{
		$retorno = false;

		$SQL = "SELECT ";
		$SQL .= PREFIXO_TABELA . "pedido.* ";
		$SQL .= "FROM ";
		$SQL .= PREFIXO_TABELA . "pedido ";

		$SQL .= $this->ObterClausulaWhere($Pedido);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		if (!$resultado->EOF)
		{
			$contador = 0;
			$retornoPedido = new stdClass();
			$retornoPedido->PedidoID										 = $resultado->fields($contador++);
			$retornoPedido->ClienteID										 = $resultado->fields($contador++);
			$retornoPedido->DataCompra										 = $resultado->fields($contador++);
			$retornoPedido->ValorTotal										 = $resultado->fields($contador++);
			$retornoPedido->SituacaoID										 = $resultado->fields($contador++);
			$retornoPedido->FormaEntregaID									 = $resultado->fields($contador++);

			$retorno = $retornoPedido;
		}

		return $retorno;

	}


	/**
	 * @method Existir
	 *
	 * @param object $Pedido
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  boolean
	 */
	public function Existir($Pedido, $ordenacao = NULL, $complemento = NULL)
	{

		$SQL = "SELECT COUNT(pedido.PedidoID) AS Registros FROM " . PREFIXO_TABELA . "pedido";

		$SQL .= $this->ObterClausulaWhere($Pedido);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}
		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		$registros = intval($resultado->fields("Registros"));

		if ($registros > 0)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}


	/**
	 * @method ContarRegistros
	 *
	 * @param object $Pedido
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  boolean
	 */
	public function ContarRegistros($Pedido, $ordenacao = NULL, $complemento = NULL)
	{

		$SQL = "SELECT COUNT(pedido.PedidoID) AS Registros FROM " . PREFIXO_TABELA . "pedido";

		$SQL .= $this->ObterClausulaWhere($Pedido);

		if ($complemento !== NULL)
		{
			$SQL .= " ".$complemento." ";
		}

		if ($ordenacao !== NULL)
		{
			$SQL .= " ORDER BY ".$ordenacao." ";
		} 

		$resultado = $this->Executar($SQL);

		$registros = intval($resultado->fields("Registros"));

		return $registros;
	}


	/**
	 * @method Excluir
	 *
	 * @author  Pedro Schneider (correaschneider@gmail.com)
	 * @param object $Pedido
	 *
	 * @return  boolean
	 *
	 * Gerado autom�ticamente atrav�s do Gerador
	 *
	 */
	public function Excluir($Pedido)
	{
		$SQL = "DELETE FROM " . PREFIXO_TABELA . "pedido";

		$SQL .= $this->ObterClausulaWhere($Pedido);

		$resultado = $this->Executar($SQL);

		return $resultado;
	}
	/**
	 * @method Salvar
	 *
	 * @author  Pedro Schneider (correaschneider@gmail.com)
	 * @param object $Pedido
	 *
	 * @return  object
	 */
	public function Salvar($Pedido)
	{
		if($Pedido->PedidoID === NULL)
		{
			$SQL = "INSERT INTO " . PREFIXO_TABELA . "pedido
				(";
				if($Pedido->ClienteID !== NULL)
				{
					$SQL .= "ClienteID,";
				}
				if($Pedido->DataCompra !== NULL)
				{
					$SQL .= "DataCompra,";
				}
				if($Pedido->ValorTotal !== NULL)
				{
					$SQL .= "ValorTotal,";
				}
				if($Pedido->SituacaoID !== NULL)
				{
					$SQL .= "SituacaoID,";
				}
				if($Pedido->FormaEntregaID !== NULL)
				{
					$SQL .= "FormaEntregaID,";
				}
				$SQL = substr($SQL,0,-1);
				$SQL .= ") VALUES (";
				if($Pedido->ClienteID !== NULL)
				{
					$SQL .= $Pedido->ClienteID.",";
				}
				if($Pedido->DataCompra !== NULL)
				{
					$SQL .= "'".$Pedido->DataCompra."',";
				}
				if($Pedido->ValorTotal !== NULL)
				{
					$SQL .= $Pedido->ValorTotal.",";
				}
				if($Pedido->SituacaoID !== NULL)
				{
					$SQL .= $Pedido->SituacaoID.",";
				}
				if($Pedido->FormaEntregaID !== NULL)
				{
					$SQL .= $Pedido->FormaEntregaID.",";
				}
			$SQL = substr($SQL,0,-1);
			$SQL .=")";
		}
		else
		{
			$SQL = "UPDATE " . PREFIXO_TABELA . "pedido SET ";
			if($Pedido->ClienteID !== NULL)
			{
				$SQL .= "ClienteID = ".$Pedido->ClienteID.",";
			}
			if($Pedido->DataCompra !== NULL)
			{
				$SQL .= "DataCompra = '".$Pedido->DataCompra."',";
			}
			if($Pedido->ValorTotal !== NULL)
			{
				$SQL .= "ValorTotal = ".$Pedido->ValorTotal.",";
			}
			if($Pedido->SituacaoID !== NULL)
			{
				$SQL .= "SituacaoID = ".$Pedido->SituacaoID.",";
			}
			if($Pedido->FormaEntregaID !== NULL)
			{
				$SQL .= "FormaEntregaID = ".$Pedido->FormaEntregaID.",";
			}

			$SQL = substr($SQL,0,-1);
			$SQL .= " WHERE PedidoID = " . $Pedido->PedidoID;
		}

		$resultado = $this->Executar($SQL);
		if($Pedido->PedidoID === NULL)
		{
			$Pedido->PedidoID = $this->Conexao->Insert_ID();
		}

		return $Pedido;
	}

	/**
	 * @method ObterClausulaWhere
	 *
	 * @author  Pedro Schneider (correaschneider@gmail.com)
	 * @param object $Pedido
	 *
	 * @return  object
	 */
	private function ObterClausulaWhere($Pedido)
	{
		// Pedido
		if($Pedido->PedidoID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.PedidoID = " . $Pedido->PedidoID;
		}
		if($Pedido->ClienteID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.ClienteID = " . $Pedido->ClienteID;
		}
		if($Pedido->DataCompra !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.DataCompra = '" . $Pedido->DataCompra . "'";
		}
		if($Pedido->DataCompraMenor !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.DataCompra <= '" . $Pedido->DataCompraMenor . "'";
		}
		if($Pedido->DataCompraMaior !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.DataCompra >= '" . $Pedido->DataCompraMaior . "'";
		}
		if($Pedido->DataCompraInicial !== NULL && $Pedido->DataCompraFinal !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.DataCompra BETWEEN '" . $Pedido->DataCompraInicial . "' AND '" . $Pedido->DataCompraFinal . "'";
		}
		if($Pedido->ValorTotal !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.ValorTotal = " . $Pedido->ValorTotal;
		}
		if($Pedido->SituacaoID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.SituacaoID = " . $Pedido->SituacaoID;
		}
		if($Pedido->FormaEntregaID !== NULL)
		{
			$colecaoCondicao[] = " " . PREFIXO_TABELA . "pedido.FormaEntregaID = " . $Pedido->FormaEntregaID;
		}

		$SQL = ((count($colecaoCondicao)) ? " WHERE " .  implode(" AND ", $colecaoCondicao)  : "" );

		return $SQL;
	}

}
?>